/**
 * <p>Title: ResponseEntity</p>
 * <p>Description: </p>
 *
 * @author 王敞   365799712@qq.com
 * @date 2020年7月15日
 */
package com.woniuxy.commons.entity;

import com.woniuxy.commons.utils.CodeUtils;

import lombok.Data;
import lombok.experimental.Accessors;

/**
 * <p>Title: ResponseEntity</p>
 * <p>Description: 返回数据类，返回的数据封装在此类里面，无数据返回类型为Void</p>
 *
 * @author 王敞   365799712@qq.com
 * @date 2020年7月15日
 */
@Data
@Accessors(chain = true)
public class ResponseEntity<T> {
    private int code;//响应码
    private String message;//提示信息
    private T data;// 返回的数据


    //无数据返回的成功响应
    public static final ResponseEntity<Void> SUCCESS_RESPONSE =
            new ResponseEntity<Void>().setCode(CodeUtils.SUCCESS_CODE);
    //无数据返回的错误响应
    public static final ResponseEntity<Void> ERROR_CODE =
            new ResponseEntity<Void>().setCode(CodeUtils.ERROR_CODE);

    /**
     * 无参构造函数
     */
    public ResponseEntity() {

    }

    /*
        构造函数
     */
    public ResponseEntity(int code, String message) {
        this.code = code;
        this.message = message;
    }

    /**
     * 构造函数
     *
     * @param code
     * @param msg
     * @param data
     */
    public ResponseEntity(int code, String msg, T data) {
        this.code = code;
        this.message = msg;
        this.data = data;
    }

    /**
     * 有数据返回的成功构造函数
     *
     * @param data
     */
    public ResponseEntity(T data) {
        this(CodeUtils.SUCCESS_CODE, "ok", data);
    }
}
